<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>


//【示例1】下面示例定义原始函数checkNumericRange，用来检测传入的参数值是否在一个指定范围内，范围下限和上限根据当前实例对象的minimum和maximum属性决定。然后使用bind方法把checkNumericRange函数绑定到对象range身上。如果再次调用这个新绑定后的函数boundCheckNumericRange后，就可以根据该对象的属性minimum和maximum来确定调用函数时传入值是否在指定的范围内。
var checkNumericRange = function (value) {
    if (typeof value !== 'number')
        return false;
    else
        return value >= this.minimum && value <= this.maximum;
}
var range = { minimum: 10, maximum: 20 };
var boundCheckNumericRange = checkNumericRange.bind(range);
var result = boundCheckNumericRange (12);
document.write(result);				//true
//【示例2】下面示例在上面示例基础上，为originalObject对象定义了两个上下限属性，以及一个方法checkNumericRange。然后，直接调用originalObject对象的checkNumericRange方法，检测10是否在指定范围，则返回值为false，因为当前minimum和maximum值分别为50和100。接着，把originalObject.checkNumericRange方法绑定到range对象，则再次传入值10，则返回值为true，说明在指定范围，因为此时minimum和maximum值分别为10和20。
var originalObject = {
    minimum: 50,
    maximum: 100,
    checkNumericRange: function (value) {
        if (typeof value !== 'number')
            return false;
        else
            return value >= this.minimum && value <= this.maximum;
    }
}
var result = originalObject.checkNumericRange(10);
document.write(result);		//false
var range = { minimum: 10, maximum: 20 };
var boundObjectWithRange = originalObject.checkNumericRange.bind(range);
var result = boundObjectWithRange(10);
document.write(result);		//true
//【示例3】下面示例演示了如何利用bind方法为函数两次传递参数值，以便实现连续参数求值计算。
var displayArgs = function (val1, val2, val3, val4) {
    document.write(val1 + " " + val2 + " " + val3 + " " + val4);
}
var emptyObject = {};
var displayArgs2 = displayArgs.bind(emptyObject, 12, "a");
displayArgs2("b", "c");		//12 a b c
//【示例4】下面示例演示如何使用trim方法快速清除掉字符串首尾空格，该方法在表单处理中比较实用。
var message = "    abc def     \r\n  ";
document.write("[" + message.trim() + "]");  			//[abc def]
document.write("<br/>");
document.write("length: " + message.trim().length);  	//7


</script>
</head>
<body>
</body>
</html>
